import pandas as pd
import datetime

#保存人员区分信息
staff_area = {
    '宝安' : ['韦泽龙','韦辉辉','黄华义','李德飞','占镐锋','林奇','李永林','苏健金','林文斌','冯宇标','罗峰','罗锋','彭帮忠','丘江','陈卫国','陈雾','雷万成','温晖','张信平','梁远清','刘金鹏','黄瑞钦','陈昌远'],
    '福田' : ['苏辉煌','刘后华','林艺','马宗超','饶亮','谢培强','魏宇佳','罗习海','魏宏','周传光','林丹琪','彭柳荣','龚海林','方敏','罗建','张灿州','莫尊绍','姚峰','林梓涵','邓辉龙','王梓荣','黄浩然','王云','毕伟豪','林志勇','刘祖栎','毛楚铭','张飞','崔二朋','张加雨','陈业威','陈佳椋','黄志浪'],
    '光明' : ['王扬春','吴廷光','陈义','梁宽','鲁进伟','廖伟明','李义群','邓亮','丘满昌','刘达斌','周承豪','邓泉','刘付新杰','黄亚海','张广俊','魏文','甘国辉'],
    '龙岗' : ['黄辉','丘淼','邓华强','李伟伟','刘纯才','朱健伟','朱键伟','张富明','余少群','黎绍金','王学谦','李绰德','陈洪华','林旭波','罗铭贵','邓护峰','邓护锋','谢复荣','陈文彦','陈凤娇','谷兰红','周家龙','张俊华','郭旋','卢志才','刘太松','王毅广','林豪杰','黄文华','朱智琦','王锦城','林秀丽','骆江顺','杨志辉','钟玉霞','郑文伟','马俊泳','林小钻','张福源','邓运财','李云峰','李秀忠','陈灏霖','苏尚居','杨健','梁荣伟'],
    '龙华' : ['支锦文','叶仕锦','熊进','陈嵩锋','阿扎玛提','李文锋','洪灿坚','顾绍飞','邹胜华','陈明','葛长根','袁海堂','张伟传','郑武滔','郑武略','刘社军'],
    '罗湖' : ['黎志腾','彭奕明','范志锐','刘开铭','余建安','曹志辉','杨文景','张壮豪','刘明富','黄锦塘','曾运兵','杨乾'],
    '南山' : ['何小均','张瑶','杨宝峰','吕翀','吕�','陈学文','曾旭辉','邢凯','洪波','蓝伟方','黄国栋','周世晓','王国杰','陈永健','查捷','陈志环','何文彬','吴金财','周爽','郭江','翁建武','黄远华','林烁','刘俊杰','康旭发','吴鸿炯','邱俊锋','邓嘉壕','欧堂杰','黄文基','郑鸿进'],
    '坪大' : ['黄永茂','刘诗成','钟伟龙','周磊','杨世强','李剑勇','黄康隆','欧伟波','高艳德','官艳德','肖竣'],
    '蛇口前海' : ['罗军华'],
    '盐田' : ['郭志勇','林晓祥','余国均','邓志超','潘嘉明','廖发辉','杨海辉','莫秋辉','刘光伟','肖俊豪']
}

#获取值对应的键函数
def get_key(dic, val):
    for key, value in dic.items():
        if val in value:
            return key
        
#建立月份与季度映射字典
QuarterDict = {
    '一' : ['01', '02', '03'],
    '二' : ['04', '05', '06'],
    '三' : ['07', '08', '09'],
    '四' : ['10', '11', '12'],
}

#获取当前日期
time = datetime.date.today().strftime('%Y-%m') #获取年-月
year = time.split('-')[0] #获取年份
month = time.split('-')[1] #获取月份

#将月份映射成季度
quarter = get_key(QuarterDict, month)

#公式化【计划名称】
PlanName = f'{year}省统一派单第{quarter}季度无线基站巡检计划'

#在此自定义要处理的表格
df = pd.read_excel('维护作业任务工单_20230823.xlsx', dtype='object')

#根据【计划名称】、【回单人员所在部门】列筛选出有效数据
df = df.query(f"计划名称=='{PlanName}'")
df = pd.concat([df[df['回单人员所在部门'].str.contains('长讯')==True], df[df['回单人员所在部门'].str.contains('市工程')==True], df[df['回单人员所在部门'].str.contains('省工程')==True]], axis=0)

#筛选出需要的列
df = df[['任务编号', '任务名称', '回单人员所在部门', '处理人员', '回单时间']]

#从【回单人员所在部门】提取出单位名称
df['回单人员所在部门'] = df['回单人员所在部门'].apply(lambda x:x.split('（')[0])

#从【回单时间】提取出年-月
df['回单时间'] = df['回单时间'].apply(lambda x:'-'.join(x.split(' ')[0].split('-')[0:2]))

#插入【任务类型】列
df.insert(0, '任务类型', '基站巡检')

#插入【分值】列
df.insert(0, '分值', 2)

#插入【区分】列
df.insert(0, '区分', df['处理人员'].apply(lambda x:get_key(staff_area, x)))

#插入【工单数量】列
df.insert(0, '工单数量', 1)

#对列重新排序
df = df[['任务编号', '回单时间', '回单人员所在部门', '区分', '处理人员', '任务名称', '任务类型', '工单数量', '分值']]

#生成统计表
df1 = df.groupby(['回单时间', '回单人员所在部门', '区分', '处理人员', '任务类型']).sum()
df2 = df.groupby(['处理人员']).sum(numeric_only=True)

#对df删除【工单数量】列
df.drop('工单数量', axis=1, inplace=True)

#输出统计表
with pd.ExcelWriter('基站巡检工单统计.xlsx') as writer:
    df.to_excel(writer, sheet_name='清单', index=False)
    df1.to_excel(writer, sheet_name='统计1')
    df2.to_excel(writer, sheet_name='统计2')